<!DOCTYPE html>
<html lang="en-US">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<title>fit_primitives_object_model_3d [HALCON算子参考手册]</title>
<style type="text/css">
      body {
    color: #000000;
    background-color: #ffffff;
    margin: 0;
    font-family: Arial, Helvetica, sans-serif;
}

.body_main {
    margin-left: 35px;
    margin-right: 35px;
}

@media screen and (min-width:992px) {

    .body_main {
        margin-left: 10%;
        margin-right: 10%;
    }

    table.toctable {
        width: 80%
    }
}

@media screen and (min-width:1400px) {

    .body_main {
        margin-left: 15%;
        margin-right: 15%;
    }

    table.toctable {
        width: 70%
    }
}

body>div ul ul {
    margin-left: inherit;
}

a:link {
    color: #0044cc;
}

a:link,
a:visited {
    text-decoration: none;
}

a:link:hover,
a:visited:hover {
    text-decoration: underline;
}

th {
    text-align: left;
}

h1,
h2,
h3,
h4,
h5,
h6 {
    text-rendering: optimizeLegibility;
    color: #666666;
}

code {
    font-family: monospace,monospace;
}

h1 a.halconoperator {
    font-family: Arial, Helvetica, sans-serif;
    color: #666666;
}

h2 a.halconoperator {
    font-family: Arial, Helvetica, sans-serif;
    color: #666666;
}

hr {
    border: 0;
    border-top: solid 1px #f28d26;
}

.pre {
    display: block;
    padding-bottom: 1ex;
    font-family: monospace;
    white-space: pre;
}

pre {
    font-family: monospace, monospace;
    padding: 1ex;
    white-space: pre-wrap;
}

.toc {
    font-size: 80%;
    border-top: 1px dashed #f28d26;
    border-bottom: 1px dashed #f28d26;
    padding-top: 5px;
    padding-bottom: 5px;
}

.inv {
    margin: 0;
    border: 0;
    padding: 0;
}

.banner {
    color: #666666;
    padding-left: 1em;
}

.logo {
    background-color: white;
}

.keyboard {
    font-size: 80%;
    padding-left: 3px;
    padding-right: 3px;
    border-radius: 5px;
    border-width: 1px;
    border-style: solid;
    border-color: #f28d26;
    background-color: #f3f3f3;
}

.warning {
    margin-top: 2ex;
    margin-bottom: 1ex;
    padding: 10px;
    text-align: center;
    border: 1px solid;
    color: #bb0000;
    background-color: #fff7f7
}

.imprint {
    margin-top: 1ex;
    font-size: 80%;
    color: #666666;
}

.imprinthead {
    font-weight: bolder;
    color: #666666;
}

.indexlink {
    text-align: right;
    padding-bottom: 5px;
}

.postscript {
    margin-top: 2ex;
    font-size: 80%;
    color: #666666
}

.evenrow {
    background-color: #e7e7ef;
    vertical-align: top;
}

.oddrow {
    background-color: #f7f7ff;
    vertical-align: top;
}

.headrow {
    background-color: #97979f;
    color: #ffffff;
    vertical-align: top;
}

.logorow {
    vertical-align: top;
}

.error {
    color: red;
}

.var {
    font-style: italic
}

.halconoperator {
    font-family: monospace, monospace;
}

span.operator {
    font-family: monospace, monospace;
}

span.procedure {
    font-family: monospace, monospace;
}

span.operation {
    font-family: monospace, monospace;
}

span.feature {
    font-family: Arial, Helvetica, Homerton, sans-serif;
}

ul {
    padding-left: 1.2em;
}

li.dot {
    list-style-type: square;
    color: #f28d26;
}

.breadcrumb {
    font-size: 80%;
    color: white;
    background-color: #062d64;
    margin-bottom: 20px;
    padding-left: 35px;
    padding-right: 35px;
    padding-bottom: 15px;
}

.webbar {
    font-size: 80%;
    background-color: #dddddd;
    margin-top: 0px;
    margin-left: -35px;
    margin-right: -35px;
    margin-bottom: 0px;
    padding-top: 5px;
    padding-left: 35px;
    padding-right: 35px;
    padding-bottom: 5px;
}

.footer {
    display: flex;
    flex-wrap: wrap;
    justify-content: space-between;
    border-top: 1px dashed #f28d26;
    font-size: 80%;
    color: #666666;
    padding-bottom: 8px;
}

.footer .socialmedia a {
    padding-left: 7px;
}

.socialmedia {
    padding-top: 10px;
}

.copyright {
    margin-top: 19px;
}

.breadcrumb a {
    color: #ffffff;
    border-bottom: 1px solid white;
}

.breadcrumb a:link:hover,
.breadcrumb a:visited:hover {
    text-decoration: none;
    border-bottom: none;
}

.heading {
    margin-top: 1ex;
    font-size: 110%;
    font-weight: bold;
    color: #666666;
}

.text {
    color: black;
}

.example {
    font-size: 80%;
    background-color: #f3f3f3;
    border: 1px dashed #666666;
    padding: 10px;
}

.displaymath {
    display: block;
    text-align: center;
    margin-top: 1ex;
    margin-bottom: 1ex;
}

.title {
    float: left;
    padding-top: 3px;
    padding-bottom: 3px;
}

.signnote {
    font-family: Arial, Helvetica, Homerton, sans-serif;
    font-size: 80%;
    color: #666666;
    font-weight: lighter;
    font-style: italic
}

.par {
    margin-bottom: 1.5em;
}

.parhead {
    text-align: right;
}

.parname {
    float: left;
}

.pardesc {
    font-size: 85%;
    margin-top: 0.5em;
    margin-bottom: 0.5em;
    margin-left: 2em;
}

.parcat {
    color: #666;
    font-weight: bold;
}

*[data-if=cpp],
*[data-if=c],
*[data-if=dotnet],
*[data-if=com],
*[data-if=python] {
    display: none;
}

.tabbar {
    text-align: right;
    border-bottom: 1px solid #f28d26;
    margin-bottom: 0.5em;
}

ul.tabs {
    padding-top: 3px;
    padding-bottom: 3px;
    margin-top: 10px;
    margin-bottom: 0;
    font-size: 80%
}

ul.tabs li {
    padding-top: 3px;
    padding-bottom: 3px;
    display: inline;
    overflow: hidden;
    list-style-type: none;
    margin: 0;
    margin-left: 8px;
    border-top: 1px solid #666;
    border-left: 1px solid #666;
    border-right: 1px solid #666;
}

ul.tabs li.active {
    border-left: 1px solid #f28d26;
    border-right: 1px solid #f28d26;
    border-top: 1px solid #f28d26;
    border-bottom: 1px solid #fff;
}

ul.tabs li.inactive {
    background-color: #eee;
}

ul.tabs li a {
    padding-left: 5px;
    padding-right: 5px;
    color: #666;
}

ul.tabs li a:link:hover {
    text-decoration: none;
}

ul.tabs li.inactive a {
    color: #666;
}

ul.tabs li.active a {
    color: black;
}

dl.generic dd {
    margin-bottom: 1em;
}

.pari {
    color: olive;
}

.paro {
    color: maroon;
}

.comment {
    font-size: 80%;
    color: green;
    white-space: nowrap;
}

table.grid {
    border-collapse: collapse;
}

table.grid td {
    padding: 5px;
    border: 1px solid;
}

table.layout {
    border: 0px;
}

table.layout td {
    padding: 5px;
}

table.table {
    border-collapse: collapse;
}

table.table td {
    padding: 5px;
    border-left: 0px;
    border-right: 0px;
}

table.table tr:last-child {
    border-bottom: 1px solid;
}

table.table th {
    padding: 5px;
    border-top: 1px solid;
    border-bottom: 1px solid;
    border-left: 0px;
    border-right: 0px;
}

.details_summary {
    cursor: pointer;
}

table.toctable {
    width: 100%;
}

table.toctable col:first-child {
    width: 20%;
}

table.toctable col:nth-last-child(2) {
    width: 8%;
}

table.altcolored tr:nth-child(even) {
    background-color: #f3f3f3;
}

    </style>
<!--OP_REF_STYLE_END-->
<script>
    <!--
var active_lang='hdevelop';function switchVisibility(obj,active_lang,new_lang)
{var display_style='inline';
for(var i=0;i<obj.length;i++)
{if(obj.item(i).getAttribute('data-if')==new_lang)
{obj.item(i).style.display=display_style;}
if(obj.item(i).getAttribute('data-if')==active_lang)
{obj.item(i).style.display='none';}}
return;}
function toggleLanguage(new_lang,initial)
{if(active_lang!=new_lang)
{var lis=document.getElementsByTagName('li');for(var i=0;i<lis.length;i++)
{if(lis.item(i).id=='syn-'+new_lang)
{lis.item(i).className='active';}
else
{lis.item(i).className='inactive';}}
var divs=document.getElementsByTagName('div');var spans=document.getElementsByTagName('span');switchVisibility(divs,active_lang,new_lang);switchVisibility(spans,active_lang,new_lang);if(!initial)
{setCookie("halcon_reference_language",new_lang,null,null);}
active_lang=new_lang;}
return;}
function setCookie(name,value,domain,exp_offset,path,secure)
{localStorage.setItem(name,value);}
function getCookie(name)
{return localStorage.getItem(name);}
function initialize()
{var qs=location.href.split('?')[1];var qs_lang_raw=location.href.split('interface=')[1];var qs_lang;if(qs_lang_raw)
{qs_lang=qs_lang_raw.split('#')[0];}
var cookie_lang=getCookie("halcon_reference_language");var new_lang;if((qs_lang=="hdevelop")||(qs_lang=="dotnet")||(qs_lang=="python")||(qs_lang=="cpp")||(qs_lang=="c"))
{new_lang=qs_lang;setCookie("halcon_reference_language",new_lang,null,null);}
else if((cookie_lang=="hdevelop")||(cookie_lang=="dotnet")||(cookie_lang=="python")||(cookie_lang=="cpp")||(cookie_lang=="c"))
{new_lang=cookie_lang;}
else
{new_lang="hdevelop";}
toggleLanguage(new_lang,1);return;}
-->

  </script>
</head>
<body onload="initialize();">
<div class="breadcrumb">
<br class="inv"><a href="index.html">目录</a> / <a href="toc_3dobjectmodel.html">3D Object Model</a> / <a href="toc_3dobjectmodel_segmentation.html">分割</a><br class="inv">
</div>
<div class="body_main">
<div class="tabbar"><ul class="tabs">
<li id="syn-hdevelop" class="active"><a href="javascript:void(0);" onclick="toggleLanguage('hdevelop')" onfocus="blur()">HDevelop</a></li>
<li id="syn-dotnet" class="inactive"><a href="javascript:void(0);" onclick="toggleLanguage('dotnet')" onfocus="blur()">.NET</a></li>
<li id="syn-python" class="inactive"><a href="javascript:void(0);" onclick="toggleLanguage('python')" onfocus="blur()">Python</a></li>
<li id="syn-cpp" class="inactive"><a href="javascript:void(0);" onclick="toggleLanguage('cpp')" onfocus="blur()">C++</a></li>
<li id="syn-c" class="inactive"><a href="javascript:void(0);" onclick="toggleLanguage('c')" onfocus="blur()">C</a></li>
</ul></div>
<div class="indexlink">
<a href="index_classes.html"><span data-if="dotnet" style="display:none;">类别</span><span data-if="cpp" style="display:none;">类别</span></a><span data-if="dotnet" style="display:none;"> | </span><span data-if="cpp" style="display:none;"> | </span><a href="index_by_name.html">算子列表</a>
</div>
<!--OP_REF_HEADER_END-->
<h1 id="sec_name">
<span data-if="hdevelop" style="display:inline;">fit_primitives_object_model_3d</span><span data-if="c" style="display:none;">T_fit_primitives_object_model_3d</span><span data-if="cpp" style="display:none;">FitPrimitivesObjectModel3d</span><span data-if="dotnet" style="display:none;">FitPrimitivesObjectModel3d</span><span data-if="python" style="display:none;">fit_primitives_object_model_3d</span> (算子名称)</h1>
<h2>名称</h2>
<p><code><span data-if="hdevelop" style="display:inline;">fit_primitives_object_model_3d</span><span data-if="c" style="display:none;">T_fit_primitives_object_model_3d</span><span data-if="cpp" style="display:none;">FitPrimitivesObjectModel3d</span><span data-if="dotnet" style="display:none;">FitPrimitivesObjectModel3d</span><span data-if="python" style="display:none;">fit_primitives_object_model_3d</span></code> — Fit 3D primitives into a set of 3D points.</p>
<h2 id="sec_synopsis">参数签名</h2>
<div data-if="hdevelop" style="display:inline;">
<p>
<code><b>fit_primitives_object_model_3d</b>( :  : <a href="#ObjectModel3D"><i>ObjectModel3D</i></a>, <a href="#GenParamName"><i>GenParamName</i></a>, <a href="#GenParamValue"><i>GenParamValue</i></a> : <a href="#ObjectModel3DOut"><i>ObjectModel3DOut</i></a>)</code></p>
</div>
<div data-if="c" style="display:none;">
<p>
<code>Herror <b>T_fit_primitives_object_model_3d</b>(const Htuple <a href="#ObjectModel3D"><i>ObjectModel3D</i></a>, const Htuple <a href="#GenParamName"><i>GenParamName</i></a>, const Htuple <a href="#GenParamValue"><i>GenParamValue</i></a>, Htuple* <a href="#ObjectModel3DOut"><i>ObjectModel3DOut</i></a>)</code></p>
</div>
<div data-if="cpp" style="display:none;">
<p>
<code>void <b>FitPrimitivesObjectModel3d</b>(const HTuple&amp; <a href="#ObjectModel3D"><i>ObjectModel3D</i></a>, const HTuple&amp; <a href="#GenParamName"><i>GenParamName</i></a>, const HTuple&amp; <a href="#GenParamValue"><i>GenParamValue</i></a>, HTuple* <a href="#ObjectModel3DOut"><i>ObjectModel3DOut</i></a>)</code></p>
<p>
<code>static HObjectModel3DArray <a href="HObjectModel3D.html">HObjectModel3D</a>::<b>FitPrimitivesObjectModel3d</b>(const HObjectModel3DArray&amp; <a href="#ObjectModel3D"><i>ObjectModel3D</i></a>, const HTuple&amp; <a href="#GenParamName"><i>GenParamName</i></a>, const HTuple&amp; <a href="#GenParamValue"><i>GenParamValue</i></a>)</code></p>
<p>
<code><a href="HObjectModel3D.html">HObjectModel3D</a> <a href="HObjectModel3D.html">HObjectModel3D</a>::<b>FitPrimitivesObjectModel3d</b>(const HTuple&amp; <a href="#GenParamName"><i>GenParamName</i></a>, const HTuple&amp; <a href="#GenParamValue"><i>GenParamValue</i></a>) const</code></p>
</div>
<div data-if="com" style="display:none;"></div>
<div data-if="dotnet" style="display:none;">
<p>
<code>static void <a href="HOperatorSet.html">HOperatorSet</a>.<b>FitPrimitivesObjectModel3d</b>(<a href="HTuple.html">HTuple</a> <a href="#ObjectModel3D"><i>objectModel3D</i></a>, <a href="HTuple.html">HTuple</a> <a href="#GenParamName"><i>genParamName</i></a>, <a href="HTuple.html">HTuple</a> <a href="#GenParamValue"><i>genParamValue</i></a>, out <a href="HTuple.html">HTuple</a> <a href="#ObjectModel3DOut"><i>objectModel3DOut</i></a>)</code></p>
<p>
<code>static <a href="HObjectModel3D.html">HObjectModel3D[]</a> <a href="HObjectModel3D.html">HObjectModel3D</a>.<b>FitPrimitivesObjectModel3d</b>(<a href="HObjectModel3D.html">HObjectModel3D[]</a> <a href="#ObjectModel3D"><i>objectModel3D</i></a>, <a href="HTuple.html">HTuple</a> <a href="#GenParamName"><i>genParamName</i></a>, <a href="HTuple.html">HTuple</a> <a href="#GenParamValue"><i>genParamValue</i></a>)</code></p>
<p>
<code><a href="HObjectModel3D.html">HObjectModel3D</a> <a href="HObjectModel3D.html">HObjectModel3D</a>.<b>FitPrimitivesObjectModel3d</b>(<a href="HTuple.html">HTuple</a> <a href="#GenParamName"><i>genParamName</i></a>, <a href="HTuple.html">HTuple</a> <a href="#GenParamValue"><i>genParamValue</i></a>)</code></p>
</div>
<div data-if="python" style="display:none;">
<p>
<code>def <b>fit_primitives_object_model_3d</b>(<a href="#ObjectModel3D"><i>object_model_3d</i></a>: MaybeSequence[HHandle], <a href="#GenParamName"><i>gen_param_name</i></a>: Sequence[str], <a href="#GenParamValue"><i>gen_param_value</i></a>: Sequence[Union[str, float, int]]) -&gt; Sequence[HHandle]</code></p>
<p>
<code>def <b>fit_primitives_object_model_3d_s</b>(<a href="#ObjectModel3D"><i>object_model_3d</i></a>: MaybeSequence[HHandle], <a href="#GenParamName"><i>gen_param_name</i></a>: Sequence[str], <a href="#GenParamValue"><i>gen_param_value</i></a>: Sequence[Union[str, float, int]]) -&gt; HHandle</code></p>
</div>
<h2 id="sec_description">描述</h2>
<p>该算子 <code><span data-if="hdevelop" style="display:inline">fit_primitives_object_model_3d</span><span data-if="c" style="display:none">fit_primitives_object_model_3d</span><span data-if="cpp" style="display:none">FitPrimitivesObjectModel3d</span><span data-if="com" style="display:none">FitPrimitivesObjectModel3d</span><span data-if="dotnet" style="display:none">FitPrimitivesObjectModel3d</span><span data-if="python" style="display:none">fit_primitives_object_model_3d</span></code> fits a 3D primitive,
i.e., a simple 3D shape, into a set of 3D points given by a 3D object
model with the handle <a href="#ObjectModel3D"><i><code><span data-if="hdevelop" style="display:inline">ObjectModel3D</span><span data-if="c" style="display:none">ObjectModel3D</span><span data-if="cpp" style="display:none">ObjectModel3D</span><span data-if="com" style="display:none">ObjectModel3D</span><span data-if="dotnet" style="display:none">objectModel3D</span><span data-if="python" style="display:none">object_model_3d</span></code></i></a>. The shapes that are
available as 3D primitives comprise a cylinder, a sphere, and a plane.
As 该算子 does not perform a segmentation of the set of 3D points
that is contained in the input 3D object model, you have to make sure
that the contained 3D points already correspond to a 3D primitive.
A segmentation can be performed, e.g., with the
operator <a href="segment_object_model_3d.html"><code><span data-if="hdevelop" style="display:inline">segment_object_model_3d</span><span data-if="c" style="display:none">segment_object_model_3d</span><span data-if="cpp" style="display:none">SegmentObjectModel3d</span><span data-if="com" style="display:none">SegmentObjectModel3d</span><span data-if="dotnet" style="display:none">SegmentObjectModel3d</span><span data-if="python" style="display:none">segment_object_model_3d</span></code></a>.
</p>
<p><code><span data-if="hdevelop" style="display:inline">fit_primitives_object_model_3d</span><span data-if="c" style="display:none">fit_primitives_object_model_3d</span><span data-if="cpp" style="display:none">FitPrimitivesObjectModel3d</span><span data-if="com" style="display:none">FitPrimitivesObjectModel3d</span><span data-if="dotnet" style="display:none">FitPrimitivesObjectModel3d</span><span data-if="python" style="display:none">fit_primitives_object_model_3d</span></code> returns the handle
<code><span data-if="hdevelop" style="display:inline">ObjectModel3DOut</span><span data-if="c" style="display:none">ObjectModel3DOut</span><span data-if="cpp" style="display:none">ObjectModel3DOut</span><span data-if="com" style="display:none">ObjectModel3DOut</span><span data-if="dotnet" style="display:none">objectModel3DOut</span><span data-if="python" style="display:none">object_model_3dout</span></code> for the output 3D object model, which
contains information that concern, e.g., the type and parameters
of the fitted 3D primitive.
This information can be queried from the 3D object model with
<a href="get_object_model_3d_params.html"><code><span data-if="hdevelop" style="display:inline">get_object_model_3d_params</span><span data-if="c" style="display:none">get_object_model_3d_params</span><span data-if="cpp" style="display:none">GetObjectModel3dParams</span><span data-if="com" style="display:none">GetObjectModel3dParams</span><span data-if="dotnet" style="display:none">GetObjectModel3dParams</span><span data-if="python" style="display:none">get_object_model_3d_params</span></code></a>. Note that the extent of primitives
of the type plane and cylinder can be queried with
<a href="get_object_model_3d_params.html"><code><span data-if="hdevelop" style="display:inline">get_object_model_3d_params</span><span data-if="c" style="display:none">get_object_model_3d_params</span><span data-if="cpp" style="display:none">GetObjectModel3dParams</span><span data-if="com" style="display:none">GetObjectModel3dParams</span><span data-if="dotnet" style="display:none">GetObjectModel3dParams</span><span data-if="python" style="display:none">get_object_model_3d_params</span></code></a>, as well.
</p>
<p>The parameters of a cylinder are the (x-, y-, z-)coordinates
of the center, the normed (x-, y-, z-)directions
of the main axis of the cylinder, and the radius of the cylinder.  The
center does not necessarily lie in the center of gravity of the
cylinder (see the explanation of the parameters MinExtent and
MaxExtent of 该算子 <a href="gen_cylinder_object_model_3d.html"><code><span data-if="hdevelop" style="display:inline">gen_cylinder_object_model_3d</span><span data-if="c" style="display:none">gen_cylinder_object_model_3d</span><span data-if="cpp" style="display:none">GenCylinderObjectModel3d</span><span data-if="com" style="display:none">GenCylinderObjectModel3d</span><span data-if="dotnet" style="display:none">GenCylinderObjectModel3d</span><span data-if="python" style="display:none">gen_cylinder_object_model_3d</span></code></a>).
The sign of the main axis is determined such that the main axis points
towards the half space in which the origin is located.
For a sphere the parameters are the (x-, y-, z-)coordinates of the
center and the radius of the sphere.
A plane is given by the 4 parameters of the hessian normal form,
i.e., the unit normal  (x-, y-, z-) vector and the orthogonal
distance of the plane from the origin of the coordinate system.
The sign of the hessian normal form is determined such that the normal
vector points towards the side of the plane on which the origin is located
and the distance is not positive.
</p>
<p>If no primitive can be fitted to the set of 3D points, the returned object
model will not contain a primitive. However, depending on the parameter
values for <i><span data-if="hdevelop" style="display:inline">'output_point_coord'</span><span data-if="c" style="display:none">"output_point_coord"</span><span data-if="cpp" style="display:none">"output_point_coord"</span><span data-if="com" style="display:none">"output_point_coord"</span><span data-if="dotnet" style="display:none">"output_point_coord"</span><span data-if="python" style="display:none">"output_point_coord"</span></i> and <i><span data-if="hdevelop" style="display:inline">'output_xyz_mapping'</span><span data-if="c" style="display:none">"output_xyz_mapping"</span><span data-if="cpp" style="display:none">"output_xyz_mapping"</span><span data-if="com" style="display:none">"output_xyz_mapping"</span><span data-if="dotnet" style="display:none">"output_xyz_mapping"</span><span data-if="python" style="display:none">"output_xyz_mapping"</span></i>
(see below), the returned object model is either empty, or contains
the 3D points, or contains the 3D points and the mapping from the 3D
points to image coordinates of the input object model
<a href="#ObjectModel3D"><i><code><span data-if="hdevelop" style="display:inline">ObjectModel3D</span><span data-if="c" style="display:none">ObjectModel3D</span><span data-if="cpp" style="display:none">ObjectModel3D</span><span data-if="com" style="display:none">ObjectModel3D</span><span data-if="dotnet" style="display:none">objectModel3D</span><span data-if="python" style="display:none">object_model_3d</span></code></i></a>.
</p>
<p>To control the fitting,  you can adjust some
generic parameters within <a href="#GenParamName"><i><code><span data-if="hdevelop" style="display:inline">GenParamName</span><span data-if="c" style="display:none">GenParamName</span><span data-if="cpp" style="display:none">GenParamName</span><span data-if="com" style="display:none">GenParamName</span><span data-if="dotnet" style="display:none">genParamName</span><span data-if="python" style="display:none">gen_param_name</span></code></i></a> and <a href="#GenParamValue"><i><code><span data-if="hdevelop" style="display:inline">GenParamValue</span><span data-if="c" style="display:none">GenParamValue</span><span data-if="cpp" style="display:none">GenParamValue</span><span data-if="com" style="display:none">GenParamValue</span><span data-if="dotnet" style="display:none">genParamValue</span><span data-if="python" style="display:none">gen_param_value</span></code></i></a>.
But note that for a lot of applications the default
values are sufficient and no adjustment is necessary.
The following values for <a href="#GenParamName"><i><code><span data-if="hdevelop" style="display:inline">GenParamName</span><span data-if="c" style="display:none">GenParamName</span><span data-if="cpp" style="display:none">GenParamName</span><span data-if="com" style="display:none">GenParamName</span><span data-if="dotnet" style="display:none">genParamName</span><span data-if="python" style="display:none">gen_param_name</span></code></i></a> and <a href="#GenParamValue"><i><code><span data-if="hdevelop" style="display:inline">GenParamValue</span><span data-if="c" style="display:none">GenParamValue</span><span data-if="cpp" style="display:none">GenParamValue</span><span data-if="com" style="display:none">GenParamValue</span><span data-if="dotnet" style="display:none">genParamValue</span><span data-if="python" style="display:none">gen_param_value</span></code></i></a>
are possible:
</p>
<dl class="generic">

<dt><b><i><span data-if="hdevelop" style="display:inline">'primitive_type'</span><span data-if="c" style="display:none">"primitive_type"</span><span data-if="cpp" style="display:none">"primitive_type"</span><span data-if="com" style="display:none">"primitive_type"</span><span data-if="dotnet" style="display:none">"primitive_type"</span><span data-if="python" style="display:none">"primitive_type"</span></i>:</b></dt>
<dd>
<p>
 The parameter specifies which
type of 3D primitive should be fitted into the set of 3D points.
You can specify a specific primitive type by setting
<i><span data-if="hdevelop" style="display:inline">'primitive_type'</span><span data-if="c" style="display:none">"primitive_type"</span><span data-if="cpp" style="display:none">"primitive_type"</span><span data-if="com" style="display:none">"primitive_type"</span><span data-if="dotnet" style="display:none">"primitive_type"</span><span data-if="python" style="display:none">"primitive_type"</span></i> to <i><span data-if="hdevelop" style="display:inline">'cylinder'</span><span data-if="c" style="display:none">"cylinder"</span><span data-if="cpp" style="display:none">"cylinder"</span><span data-if="com" style="display:none">"cylinder"</span><span data-if="dotnet" style="display:none">"cylinder"</span><span data-if="python" style="display:none">"cylinder"</span></i>, <i><span data-if="hdevelop" style="display:inline">'sphere'</span><span data-if="c" style="display:none">"sphere"</span><span data-if="cpp" style="display:none">"sphere"</span><span data-if="com" style="display:none">"sphere"</span><span data-if="dotnet" style="display:none">"sphere"</span><span data-if="python" style="display:none">"sphere"</span></i>,
or <i><span data-if="hdevelop" style="display:inline">'plane'</span><span data-if="c" style="display:none">"plane"</span><span data-if="cpp" style="display:none">"plane"</span><span data-if="com" style="display:none">"plane"</span><span data-if="dotnet" style="display:none">"plane"</span><span data-if="python" style="display:none">"plane"</span></i>. Then, only the selected type of 3D primitive
is fitted into the set of 3D points. You can also specify a set of
specific 3D primitives that should be fitted by setting
<i><span data-if="hdevelop" style="display:inline">'primitive_type'</span><span data-if="c" style="display:none">"primitive_type"</span><span data-if="cpp" style="display:none">"primitive_type"</span><span data-if="com" style="display:none">"primitive_type"</span><span data-if="dotnet" style="display:none">"primitive_type"</span><span data-if="python" style="display:none">"primitive_type"</span></i> to a tuple consisting of different
primitive types. If all types of 3D primitives should be fitted,
you can set <i><span data-if="hdevelop" style="display:inline">'primitive_type'</span><span data-if="c" style="display:none">"primitive_type"</span><span data-if="cpp" style="display:none">"primitive_type"</span><span data-if="com" style="display:none">"primitive_type"</span><span data-if="dotnet" style="display:none">"primitive_type"</span><span data-if="python" style="display:none">"primitive_type"</span></i> to <i><span data-if="hdevelop" style="display:inline">'all'</span><span data-if="c" style="display:none">"all"</span><span data-if="cpp" style="display:none">"all"</span><span data-if="com" style="display:none">"all"</span><span data-if="dotnet" style="display:none">"all"</span><span data-if="python" style="display:none">"all"</span></i>. Note that
if more than one primitive type is selected, only
the best fitting 3D primitive, i.e., the 3D primitive with
the smallest quadratic residual error, is returned. </p>
<p>
<i>List of values:</i> <i><span data-if="hdevelop" style="display:inline">'cylinder'</span><span data-if="c" style="display:none">"cylinder"</span><span data-if="cpp" style="display:none">"cylinder"</span><span data-if="com" style="display:none">"cylinder"</span><span data-if="dotnet" style="display:none">"cylinder"</span><span data-if="python" style="display:none">"cylinder"</span></i>,
<i><span data-if="hdevelop" style="display:inline">'sphere'</span><span data-if="c" style="display:none">"sphere"</span><span data-if="cpp" style="display:none">"sphere"</span><span data-if="com" style="display:none">"sphere"</span><span data-if="dotnet" style="display:none">"sphere"</span><span data-if="python" style="display:none">"sphere"</span></i>, <i><span data-if="hdevelop" style="display:inline">'plane'</span><span data-if="c" style="display:none">"plane"</span><span data-if="cpp" style="display:none">"plane"</span><span data-if="com" style="display:none">"plane"</span><span data-if="dotnet" style="display:none">"plane"</span><span data-if="python" style="display:none">"plane"</span></i>, <i><span data-if="hdevelop" style="display:inline">'all'</span><span data-if="c" style="display:none">"all"</span><span data-if="cpp" style="display:none">"all"</span><span data-if="com" style="display:none">"all"</span><span data-if="dotnet" style="display:none">"all"</span><span data-if="python" style="display:none">"all"</span></i> </p>
<p>
<i>Default value:</i> <i><span data-if="hdevelop" style="display:inline">'cylinder'</span><span data-if="c" style="display:none">"cylinder"</span><span data-if="cpp" style="display:none">"cylinder"</span><span data-if="com" style="display:none">"cylinder"</span><span data-if="dotnet" style="display:none">"cylinder"</span><span data-if="python" style="display:none">"cylinder"</span></i>
</p>
</dd>

<dt><b><i><span data-if="hdevelop" style="display:inline">'fitting_algorithm'</span><span data-if="c" style="display:none">"fitting_algorithm"</span><span data-if="cpp" style="display:none">"fitting_algorithm"</span><span data-if="com" style="display:none">"fitting_algorithm"</span><span data-if="dotnet" style="display:none">"fitting_algorithm"</span><span data-if="python" style="display:none">"fitting_algorithm"</span></i>:</b></dt>
<dd>
<p>
 The parameter specifies the
used algorithm for the fitting of the 3D primitive. When fitting
a plane, the results are identical for the different algorithms. If
<i><span data-if="hdevelop" style="display:inline">'fitting_algorithm'</span><span data-if="c" style="display:none">"fitting_algorithm"</span><span data-if="cpp" style="display:none">"fitting_algorithm"</span><span data-if="com" style="display:none">"fitting_algorithm"</span><span data-if="dotnet" style="display:none">"fitting_algorithm"</span><span data-if="python" style="display:none">"fitting_algorithm"</span></i> is set to <i><span data-if="hdevelop" style="display:inline">'least_squares'</span><span data-if="c" style="display:none">"least_squares"</span><span data-if="cpp" style="display:none">"least_squares"</span><span data-if="com" style="display:none">"least_squares"</span><span data-if="dotnet" style="display:none">"least_squares"</span><span data-if="python" style="display:none">"least_squares"</span></i>, the
approach minimizes the quadratic distance between the 3D points and the
resulting primitive.  If <i><span data-if="hdevelop" style="display:inline">'fitting_algorithm'</span><span data-if="c" style="display:none">"fitting_algorithm"</span><span data-if="cpp" style="display:none">"fitting_algorithm"</span><span data-if="com" style="display:none">"fitting_algorithm"</span><span data-if="dotnet" style="display:none">"fitting_algorithm"</span><span data-if="python" style="display:none">"fitting_algorithm"</span></i> is set to
<i><span data-if="hdevelop" style="display:inline">'least_squares_huber'</span><span data-if="c" style="display:none">"least_squares_huber"</span><span data-if="cpp" style="display:none">"least_squares_huber"</span><span data-if="com" style="display:none">"least_squares_huber"</span><span data-if="dotnet" style="display:none">"least_squares_huber"</span><span data-if="python" style="display:none">"least_squares_huber"</span></i>, the approach is similar to
<i><span data-if="hdevelop" style="display:inline">'least_squares'</span><span data-if="c" style="display:none">"least_squares"</span><span data-if="cpp" style="display:none">"least_squares"</span><span data-if="com" style="display:none">"least_squares"</span><span data-if="dotnet" style="display:none">"least_squares"</span><span data-if="python" style="display:none">"least_squares"</span></i>, but the points are
weighted to decrease the impact of outliers based on the approach of
Huber (see below).  If <i><span data-if="hdevelop" style="display:inline">'fitting_algorithm'</span><span data-if="c" style="display:none">"fitting_algorithm"</span><span data-if="cpp" style="display:none">"fitting_algorithm"</span><span data-if="com" style="display:none">"fitting_algorithm"</span><span data-if="dotnet" style="display:none">"fitting_algorithm"</span><span data-if="python" style="display:none">"fitting_algorithm"</span></i> is set to
<i><span data-if="hdevelop" style="display:inline">'least_squares_tukey'</span><span data-if="c" style="display:none">"least_squares_tukey"</span><span data-if="cpp" style="display:none">"least_squares_tukey"</span><span data-if="com" style="display:none">"least_squares_tukey"</span><span data-if="dotnet" style="display:none">"least_squares_tukey"</span><span data-if="python" style="display:none">"least_squares_tukey"</span></i>, the approach is also similar to
<i><span data-if="hdevelop" style="display:inline">'least_squares'</span><span data-if="c" style="display:none">"least_squares"</span><span data-if="cpp" style="display:none">"least_squares"</span><span data-if="com" style="display:none">"least_squares"</span><span data-if="dotnet" style="display:none">"least_squares"</span><span data-if="python" style="display:none">"least_squares"</span></i>, but the points are
weighted and outliers are ignored based on the approach
of Tukey (see below).
</p>
<p>For <i><span data-if="hdevelop" style="display:inline">'least_squares_huber'</span><span data-if="c" style="display:none">"least_squares_huber"</span><span data-if="cpp" style="display:none">"least_squares_huber"</span><span data-if="com" style="display:none">"least_squares_huber"</span><span data-if="dotnet" style="display:none">"least_squares_huber"</span><span data-if="python" style="display:none">"least_squares_huber"</span></i> and <i><span data-if="hdevelop" style="display:inline">'least_squares_tukey'</span><span data-if="c" style="display:none">"least_squares_tukey"</span><span data-if="cpp" style="display:none">"least_squares_tukey"</span><span data-if="com" style="display:none">"least_squares_tukey"</span><span data-if="dotnet" style="display:none">"least_squares_tukey"</span><span data-if="python" style="display:none">"least_squares_tukey"</span></i>
a robust error statistics is used to estimate the standard deviation
of the distances from the object points without outliers from the
fitting primitive.  The Tukey algorithm removes outliers,
whereas the Huber algorithm only damps them, or more
precisely, weights them linearly.  In practice, the approach of
Tukey is recommended. </p>
<p>
<i>List of values:</i> <i><span data-if="hdevelop" style="display:inline">'least_squares'</span><span data-if="c" style="display:none">"least_squares"</span><span data-if="cpp" style="display:none">"least_squares"</span><span data-if="com" style="display:none">"least_squares"</span><span data-if="dotnet" style="display:none">"least_squares"</span><span data-if="python" style="display:none">"least_squares"</span></i>,
<i><span data-if="hdevelop" style="display:inline">'least_squares_huber'</span><span data-if="c" style="display:none">"least_squares_huber"</span><span data-if="cpp" style="display:none">"least_squares_huber"</span><span data-if="com" style="display:none">"least_squares_huber"</span><span data-if="dotnet" style="display:none">"least_squares_huber"</span><span data-if="python" style="display:none">"least_squares_huber"</span></i>,
<i><span data-if="hdevelop" style="display:inline">'least_squares_tukey'</span><span data-if="c" style="display:none">"least_squares_tukey"</span><span data-if="cpp" style="display:none">"least_squares_tukey"</span><span data-if="com" style="display:none">"least_squares_tukey"</span><span data-if="dotnet" style="display:none">"least_squares_tukey"</span><span data-if="python" style="display:none">"least_squares_tukey"</span></i></p>
<p>
<i>Default value:</i> <i><span data-if="hdevelop" style="display:inline">'least_squares'</span><span data-if="c" style="display:none">"least_squares"</span><span data-if="cpp" style="display:none">"least_squares"</span><span data-if="com" style="display:none">"least_squares"</span><span data-if="dotnet" style="display:none">"least_squares"</span><span data-if="python" style="display:none">"least_squares"</span></i>
</p>
</dd>

<dt><b><i><span data-if="hdevelop" style="display:inline">'min_radius'</span><span data-if="c" style="display:none">"min_radius"</span><span data-if="cpp" style="display:none">"min_radius"</span><span data-if="com" style="display:none">"min_radius"</span><span data-if="dotnet" style="display:none">"min_radius"</span><span data-if="python" style="display:none">"min_radius"</span></i>:</b></dt>
<dd>
<p>
 The parameter specifies the minimum
radius of a cylinder or a sphere.  If a cylinder or a sphere with
a smaller radius is fitted, the resulting 3D object model is empty.
The parameter is ignored when fitting a plane.  The unit is meter.</p>
<p>
<i>Suggested values:</i> <i>0.01</i>, <i>0.02</i>,
<i>0.1</i> </p>
<p>
<i>Default value:</i> <i>0.01</i>
</p>
</dd>

<dt><b><i><span data-if="hdevelop" style="display:inline">'max_radius'</span><span data-if="c" style="display:none">"max_radius"</span><span data-if="cpp" style="display:none">"max_radius"</span><span data-if="com" style="display:none">"max_radius"</span><span data-if="dotnet" style="display:none">"max_radius"</span><span data-if="python" style="display:none">"max_radius"</span></i>:</b></dt>
<dd>
<p>
 The parameter specifies the maximum
radius of a cylinder or a sphere.  If a cylinder or a sphere with
a larger radius is fitted, the resulting 3D object model is empty.
The parameter is ignored when fitting a plane.  The unit is
meter.</p>
<p>
<i>Suggested values:</i> <i>0.02</i>, <i>0.04</i>,
<i>0.2</i> </p>
<p>
<i>Default value:</i> <i>0.2</i>
</p>
</dd>

<dt><b><i><span data-if="hdevelop" style="display:inline">'output_point_coord'</span><span data-if="c" style="display:none">"output_point_coord"</span><span data-if="cpp" style="display:none">"output_point_coord"</span><span data-if="com" style="display:none">"output_point_coord"</span><span data-if="dotnet" style="display:none">"output_point_coord"</span><span data-if="python" style="display:none">"output_point_coord"</span></i>:</b></dt>
<dd>
<p>
  The parameter determines
if the 3D points used for the fitting are copied to the
output 3D object model.  If <i><span data-if="hdevelop" style="display:inline">'copy_point_coord'</span><span data-if="c" style="display:none">"copy_point_coord"</span><span data-if="cpp" style="display:none">"copy_point_coord"</span><span data-if="com" style="display:none">"copy_point_coord"</span><span data-if="dotnet" style="display:none">"copy_point_coord"</span><span data-if="python" style="display:none">"copy_point_coord"</span></i> is
set to <i><span data-if="hdevelop" style="display:inline">'true'</span><span data-if="c" style="display:none">"true"</span><span data-if="cpp" style="display:none">"true"</span><span data-if="com" style="display:none">"true"</span><span data-if="dotnet" style="display:none">"true"</span><span data-if="python" style="display:none">"true"</span></i>, the 3D points are copied.  If
<i><span data-if="hdevelop" style="display:inline">'copy_point_coord'</span><span data-if="c" style="display:none">"copy_point_coord"</span><span data-if="cpp" style="display:none">"copy_point_coord"</span><span data-if="com" style="display:none">"copy_point_coord"</span><span data-if="dotnet" style="display:none">"copy_point_coord"</span><span data-if="python" style="display:none">"copy_point_coord"</span></i> is set to <i><span data-if="hdevelop" style="display:inline">'false'</span><span data-if="c" style="display:none">"false"</span><span data-if="cpp" style="display:none">"false"</span><span data-if="com" style="display:none">"false"</span><span data-if="dotnet" style="display:none">"false"</span><span data-if="python" style="display:none">"false"</span></i>, no
3D points are copied.</p>
<p>
<i>List of values:</i> <i><span data-if="hdevelop" style="display:inline">'true'</span><span data-if="c" style="display:none">"true"</span><span data-if="cpp" style="display:none">"true"</span><span data-if="com" style="display:none">"true"</span><span data-if="dotnet" style="display:none">"true"</span><span data-if="python" style="display:none">"true"</span></i>,<i><span data-if="hdevelop" style="display:inline">'false'</span><span data-if="c" style="display:none">"false"</span><span data-if="cpp" style="display:none">"false"</span><span data-if="com" style="display:none">"false"</span><span data-if="dotnet" style="display:none">"false"</span><span data-if="python" style="display:none">"false"</span></i></p>
<p>
<i>Default value:</i> <i><span data-if="hdevelop" style="display:inline">'true'</span><span data-if="c" style="display:none">"true"</span><span data-if="cpp" style="display:none">"true"</span><span data-if="com" style="display:none">"true"</span><span data-if="dotnet" style="display:none">"true"</span><span data-if="python" style="display:none">"true"</span></i>
</p>
</dd>

<dt><b><i><span data-if="hdevelop" style="display:inline">'output_xyz_mapping'</span><span data-if="c" style="display:none">"output_xyz_mapping"</span><span data-if="cpp" style="display:none">"output_xyz_mapping"</span><span data-if="com" style="display:none">"output_xyz_mapping"</span><span data-if="dotnet" style="display:none">"output_xyz_mapping"</span><span data-if="python" style="display:none">"output_xyz_mapping"</span></i>:</b></dt>
<dd>
<p>
  The parameter determines
if a mapping from the 3D points to image coordinates is
copied to the output 3D object model.  This information is
needed, e.g., when using 该算子 <a href="object_model_3d_to_xyz.html"><code><span data-if="hdevelop" style="display:inline">object_model_3d_to_xyz</span><span data-if="c" style="display:none">object_model_3d_to_xyz</span><span data-if="cpp" style="display:none">ObjectModel3dToXyz</span><span data-if="com" style="display:none">ObjectModel3dToXyz</span><span data-if="dotnet" style="display:none">ObjectModel3dToXyz</span><span data-if="python" style="display:none">object_model_3d_to_xyz</span></code></a>
after the fitting (e.g., for a visualization).  If
<i><span data-if="hdevelop" style="display:inline">'output_xyz_mapping'</span><span data-if="c" style="display:none">"output_xyz_mapping"</span><span data-if="cpp" style="display:none">"output_xyz_mapping"</span><span data-if="com" style="display:none">"output_xyz_mapping"</span><span data-if="dotnet" style="display:none">"output_xyz_mapping"</span><span data-if="python" style="display:none">"output_xyz_mapping"</span></i> is  set to <i><span data-if="hdevelop" style="display:inline">'true'</span><span data-if="c" style="display:none">"true"</span><span data-if="cpp" style="display:none">"true"</span><span data-if="com" style="display:none">"true"</span><span data-if="dotnet" style="display:none">"true"</span><span data-if="python" style="display:none">"true"</span></i>,
the image coordinate mapping is copied.  Note that the parameter is
only valid, if the image coordinate mapping is available in the input
3D object model. Make sure that, if you derive the input 3D object
model by copying it with 该算子 <a href="copy_object_model_3d.html"><code><span data-if="hdevelop" style="display:inline">copy_object_model_3d</span><span data-if="c" style="display:none">copy_object_model_3d</span><span data-if="cpp" style="display:none">CopyObjectModel3d</span><span data-if="com" style="display:none">CopyObjectModel3d</span><span data-if="dotnet" style="display:none">CopyObjectModel3d</span><span data-if="python" style="display:none">copy_object_model_3d</span></code></a>
from a 3D object model that contains such a mapping, the mapping is
copied, too. Furthermore, the parameter is only valid, if
the 3D points are copied to the output 3D object model, which is set
with the parameter <i><span data-if="hdevelop" style="display:inline">'output_point_coord'</span><span data-if="c" style="display:none">"output_point_coord"</span><span data-if="cpp" style="display:none">"output_point_coord"</span><span data-if="com" style="display:none">"output_point_coord"</span><span data-if="dotnet" style="display:none">"output_point_coord"</span><span data-if="python" style="display:none">"output_point_coord"</span></i>. </p>
<p>
<i>List of values:</i> <i><span data-if="hdevelop" style="display:inline">'true'</span><span data-if="c" style="display:none">"true"</span><span data-if="cpp" style="display:none">"true"</span><span data-if="com" style="display:none">"true"</span><span data-if="dotnet" style="display:none">"true"</span><span data-if="python" style="display:none">"true"</span></i>,<i><span data-if="hdevelop" style="display:inline">'false'</span><span data-if="c" style="display:none">"false"</span><span data-if="cpp" style="display:none">"false"</span><span data-if="com" style="display:none">"false"</span><span data-if="dotnet" style="display:none">"false"</span><span data-if="python" style="display:none">"false"</span></i></p>
<p>
<i>Default value:</i> <i><span data-if="hdevelop" style="display:inline">'false'</span><span data-if="c" style="display:none">"false"</span><span data-if="cpp" style="display:none">"false"</span><span data-if="com" style="display:none">"false"</span><span data-if="dotnet" style="display:none">"false"</span><span data-if="python" style="display:none">"false"</span></i>
</p>
</dd>
</dl>
<p>The minimum number of 3D points that are necessary to fit a plane is
three.  The minimum number of 3D points that is necessary to fit a
sphere is four.  The minimum number of 3D points that is necessary to
fit a cylinder is five.
</p>
<h2 id="sec_execution">运行信息</h2>
<ul>
  <li>多线程类型:可重入(与非独占操作符并行运行)。</li>
<li>多线程作用域:全局(可以从任何线程调用)。</li>
  <li>未经并行化处理。</li>
</ul>
<h2 id="sec_parameters">参数表</h2>
  <div class="par">
<div class="parhead">
<span id="ObjectModel3D" class="parname"><b><code><span data-if="hdevelop" style="display:inline">ObjectModel3D</span><span data-if="c" style="display:none">ObjectModel3D</span><span data-if="cpp" style="display:none">ObjectModel3D</span><span data-if="com" style="display:none">ObjectModel3D</span><span data-if="dotnet" style="display:none">objectModel3D</span><span data-if="python" style="display:none">object_model_3d</span></code></b> (input_control)  </span><span>object_model_3d(-array) <code>→</code> <span data-if="dotnet" style="display:none"><a href="HObjectModel3D.html">HObjectModel3D</a>, </span><span data-if="dotnet" style="display:none"><a href="HTuple.html">HTuple</a></span><span data-if="python" style="display:none">MaybeSequence[HHandle]</span><span data-if="cpp" style="display:none"><a href="HTuple.html">HTuple</a></span><span data-if="c" style="display:none">Htuple</span><span data-if="hdevelop" style="display:inline"> (handle)</span><span data-if="dotnet" style="display:none"> (<i>IntPtr</i>)</span><span data-if="cpp" style="display:none"> (<i>HHandle</i>)</span><span data-if="c" style="display:none"> (<i>handle</i>)</span></span>
</div>
<p class="pardesc">Handle of the input 3D object model.</p>
</div>
  <div class="par">
<div class="parhead">
<span id="GenParamName" class="parname"><b><code><span data-if="hdevelop" style="display:inline">GenParamName</span><span data-if="c" style="display:none">GenParamName</span><span data-if="cpp" style="display:none">GenParamName</span><span data-if="com" style="display:none">GenParamName</span><span data-if="dotnet" style="display:none">genParamName</span><span data-if="python" style="display:none">gen_param_name</span></code></b> (input_control)  </span><span>attribute.name-array <code>→</code> <span data-if="dotnet" style="display:none"><a href="HTuple.html">HTuple</a></span><span data-if="python" style="display:none">Sequence[str]</span><span data-if="cpp" style="display:none"><a href="HTuple.html">HTuple</a></span><span data-if="c" style="display:none">Htuple</span><span data-if="hdevelop" style="display:inline"> (string)</span><span data-if="dotnet" style="display:none"> (<i>string</i>)</span><span data-if="cpp" style="display:none"> (<i>HString</i>)</span><span data-if="c" style="display:none"> (<i>char*</i>)</span></span>
</div>
<p class="pardesc">Names of the generic parameters.</p>
<p class="pardesc"><span class="parcat">Number of elements:
      </span>GenParamName == GenParamValue</p>
<p class="pardesc"><span class="parcat">List of values:
      </span><span data-if="hdevelop" style="display:inline">'fitting_algorithm'</span><span data-if="c" style="display:none">"fitting_algorithm"</span><span data-if="cpp" style="display:none">"fitting_algorithm"</span><span data-if="com" style="display:none">"fitting_algorithm"</span><span data-if="dotnet" style="display:none">"fitting_algorithm"</span><span data-if="python" style="display:none">"fitting_algorithm"</span>, <span data-if="hdevelop" style="display:inline">'max_radius'</span><span data-if="c" style="display:none">"max_radius"</span><span data-if="cpp" style="display:none">"max_radius"</span><span data-if="com" style="display:none">"max_radius"</span><span data-if="dotnet" style="display:none">"max_radius"</span><span data-if="python" style="display:none">"max_radius"</span>, <span data-if="hdevelop" style="display:inline">'min_radius'</span><span data-if="c" style="display:none">"min_radius"</span><span data-if="cpp" style="display:none">"min_radius"</span><span data-if="com" style="display:none">"min_radius"</span><span data-if="dotnet" style="display:none">"min_radius"</span><span data-if="python" style="display:none">"min_radius"</span>, <span data-if="hdevelop" style="display:inline">'output_point_coord'</span><span data-if="c" style="display:none">"output_point_coord"</span><span data-if="cpp" style="display:none">"output_point_coord"</span><span data-if="com" style="display:none">"output_point_coord"</span><span data-if="dotnet" style="display:none">"output_point_coord"</span><span data-if="python" style="display:none">"output_point_coord"</span>, <span data-if="hdevelop" style="display:inline">'output_xyz_mapping'</span><span data-if="c" style="display:none">"output_xyz_mapping"</span><span data-if="cpp" style="display:none">"output_xyz_mapping"</span><span data-if="com" style="display:none">"output_xyz_mapping"</span><span data-if="dotnet" style="display:none">"output_xyz_mapping"</span><span data-if="python" style="display:none">"output_xyz_mapping"</span>, <span data-if="hdevelop" style="display:inline">'primitive_type'</span><span data-if="c" style="display:none">"primitive_type"</span><span data-if="cpp" style="display:none">"primitive_type"</span><span data-if="com" style="display:none">"primitive_type"</span><span data-if="dotnet" style="display:none">"primitive_type"</span><span data-if="python" style="display:none">"primitive_type"</span></p>
</div>
  <div class="par">
<div class="parhead">
<span id="GenParamValue" class="parname"><b><code><span data-if="hdevelop" style="display:inline">GenParamValue</span><span data-if="c" style="display:none">GenParamValue</span><span data-if="cpp" style="display:none">GenParamValue</span><span data-if="com" style="display:none">GenParamValue</span><span data-if="dotnet" style="display:none">genParamValue</span><span data-if="python" style="display:none">gen_param_value</span></code></b> (input_control)  </span><span>attribute.name-array <code>→</code> <span data-if="dotnet" style="display:none"><a href="HTuple.html">HTuple</a></span><span data-if="python" style="display:none">Sequence[Union[str, float, int]]</span><span data-if="cpp" style="display:none"><a href="HTuple.html">HTuple</a></span><span data-if="c" style="display:none">Htuple</span><span data-if="hdevelop" style="display:inline"> (string / </span><span data-if="hdevelop" style="display:inline">real / </span><span data-if="hdevelop" style="display:inline">integer)</span><span data-if="dotnet" style="display:none"> (<i>string</i> / </span><span data-if="dotnet" style="display:none">double / </span><span data-if="dotnet" style="display:none">int / </span><span data-if="dotnet" style="display:none">long)</span><span data-if="cpp" style="display:none"> (<i>HString</i> / </span><span data-if="cpp" style="display:none">double / </span><span data-if="cpp" style="display:none">Hlong)</span><span data-if="c" style="display:none"> (<i>char*</i> / </span><span data-if="c" style="display:none">double / </span><span data-if="c" style="display:none">Hlong)</span></span>
</div>
<p class="pardesc">Values of the generic parameters.</p>
<p class="pardesc"><span class="parcat">Number of elements:
      </span>GenParamValue == GenParamName</p>
<p class="pardesc"><span class="parcat">Suggested values:
      </span><span data-if="hdevelop" style="display:inline">'cylinder'</span><span data-if="c" style="display:none">"cylinder"</span><span data-if="cpp" style="display:none">"cylinder"</span><span data-if="com" style="display:none">"cylinder"</span><span data-if="dotnet" style="display:none">"cylinder"</span><span data-if="python" style="display:none">"cylinder"</span>, <span data-if="hdevelop" style="display:inline">'sphere'</span><span data-if="c" style="display:none">"sphere"</span><span data-if="cpp" style="display:none">"sphere"</span><span data-if="com" style="display:none">"sphere"</span><span data-if="dotnet" style="display:none">"sphere"</span><span data-if="python" style="display:none">"sphere"</span>, <span data-if="hdevelop" style="display:inline">'plane'</span><span data-if="c" style="display:none">"plane"</span><span data-if="cpp" style="display:none">"plane"</span><span data-if="com" style="display:none">"plane"</span><span data-if="dotnet" style="display:none">"plane"</span><span data-if="python" style="display:none">"plane"</span>, <span data-if="hdevelop" style="display:inline">'all'</span><span data-if="c" style="display:none">"all"</span><span data-if="cpp" style="display:none">"all"</span><span data-if="com" style="display:none">"all"</span><span data-if="dotnet" style="display:none">"all"</span><span data-if="python" style="display:none">"all"</span>, <span data-if="hdevelop" style="display:inline">'least_squares'</span><span data-if="c" style="display:none">"least_squares"</span><span data-if="cpp" style="display:none">"least_squares"</span><span data-if="com" style="display:none">"least_squares"</span><span data-if="dotnet" style="display:none">"least_squares"</span><span data-if="python" style="display:none">"least_squares"</span>, <span data-if="hdevelop" style="display:inline">'least_squares_huber'</span><span data-if="c" style="display:none">"least_squares_huber"</span><span data-if="cpp" style="display:none">"least_squares_huber"</span><span data-if="com" style="display:none">"least_squares_huber"</span><span data-if="dotnet" style="display:none">"least_squares_huber"</span><span data-if="python" style="display:none">"least_squares_huber"</span>, <span data-if="hdevelop" style="display:inline">'least_squares_tukey'</span><span data-if="c" style="display:none">"least_squares_tukey"</span><span data-if="cpp" style="display:none">"least_squares_tukey"</span><span data-if="com" style="display:none">"least_squares_tukey"</span><span data-if="dotnet" style="display:none">"least_squares_tukey"</span><span data-if="python" style="display:none">"least_squares_tukey"</span>, 0.01, 0.05, 0.1, 0.2, <span data-if="hdevelop" style="display:inline">'true'</span><span data-if="c" style="display:none">"true"</span><span data-if="cpp" style="display:none">"true"</span><span data-if="com" style="display:none">"true"</span><span data-if="dotnet" style="display:none">"true"</span><span data-if="python" style="display:none">"true"</span>, <span data-if="hdevelop" style="display:inline">'false'</span><span data-if="c" style="display:none">"false"</span><span data-if="cpp" style="display:none">"false"</span><span data-if="com" style="display:none">"false"</span><span data-if="dotnet" style="display:none">"false"</span><span data-if="python" style="display:none">"false"</span></p>
</div>
  <div class="par">
<div class="parhead">
<span id="ObjectModel3DOut" class="parname"><b><code><span data-if="hdevelop" style="display:inline">ObjectModel3DOut</span><span data-if="c" style="display:none">ObjectModel3DOut</span><span data-if="cpp" style="display:none">ObjectModel3DOut</span><span data-if="com" style="display:none">ObjectModel3DOut</span><span data-if="dotnet" style="display:none">objectModel3DOut</span><span data-if="python" style="display:none">object_model_3dout</span></code></b> (output_control)  </span><span>object_model_3d(-array) <code>→</code> <span data-if="dotnet" style="display:none"><a href="HObjectModel3D.html">HObjectModel3D</a>, </span><span data-if="dotnet" style="display:none"><a href="HTuple.html">HTuple</a></span><span data-if="python" style="display:none">Sequence[HHandle]</span><span data-if="cpp" style="display:none"><a href="HTuple.html">HTuple</a></span><span data-if="c" style="display:none">Htuple</span><span data-if="hdevelop" style="display:inline"> (handle)</span><span data-if="dotnet" style="display:none"> (<i>IntPtr</i>)</span><span data-if="cpp" style="display:none"> (<i>HHandle</i>)</span><span data-if="c" style="display:none"> (<i>handle</i>)</span></span>
</div>
<p class="pardesc">Handle of the output 3D object model.</p>
</div>
<h2 id="sec_result">结果</h2>
<p><code><span data-if="hdevelop" style="display:inline">fit_primitives_object_model_3d</span><span data-if="c" style="display:none">fit_primitives_object_model_3d</span><span data-if="cpp" style="display:none">FitPrimitivesObjectModel3d</span><span data-if="com" style="display:none">FitPrimitivesObjectModel3d</span><span data-if="dotnet" style="display:none">FitPrimitivesObjectModel3d</span><span data-if="python" style="display:none">fit_primitives_object_model_3d</span></code> returns <TT>2</TT> (
      <TT>H_MSG_TRUE</TT>)
     if all parameter
values are correct.  如有必要，将引发异常。</p>
<h2 id="sec_predecessors">可能的前置算子</h2>
<p>
<code><a href="xyz_to_object_model_3d.html"><span data-if="hdevelop" style="display:inline">xyz_to_object_model_3d</span><span data-if="c" style="display:none">xyz_to_object_model_3d</span><span data-if="cpp" style="display:none">XyzToObjectModel3d</span><span data-if="com" style="display:none">XyzToObjectModel3d</span><span data-if="dotnet" style="display:none">XyzToObjectModel3d</span><span data-if="python" style="display:none">xyz_to_object_model_3d</span></a></code>, 
<code><a href="read_object_model_3d.html"><span data-if="hdevelop" style="display:inline">read_object_model_3d</span><span data-if="c" style="display:none">read_object_model_3d</span><span data-if="cpp" style="display:none">ReadObjectModel3d</span><span data-if="com" style="display:none">ReadObjectModel3d</span><span data-if="dotnet" style="display:none">ReadObjectModel3d</span><span data-if="python" style="display:none">read_object_model_3d</span></a></code>
</p>
<h2 id="sec_successors">可能的后置算子</h2>
<p>
<code><a href="get_object_model_3d_params.html"><span data-if="hdevelop" style="display:inline">get_object_model_3d_params</span><span data-if="c" style="display:none">get_object_model_3d_params</span><span data-if="cpp" style="display:none">GetObjectModel3dParams</span><span data-if="com" style="display:none">GetObjectModel3dParams</span><span data-if="dotnet" style="display:none">GetObjectModel3dParams</span><span data-if="python" style="display:none">get_object_model_3d_params</span></a></code>, 
<code><a href="object_model_3d_to_xyz.html"><span data-if="hdevelop" style="display:inline">object_model_3d_to_xyz</span><span data-if="c" style="display:none">object_model_3d_to_xyz</span><span data-if="cpp" style="display:none">ObjectModel3dToXyz</span><span data-if="com" style="display:none">ObjectModel3dToXyz</span><span data-if="dotnet" style="display:none">ObjectModel3dToXyz</span><span data-if="python" style="display:none">object_model_3d_to_xyz</span></a></code>, 
<code><a href="write_object_model_3d.html"><span data-if="hdevelop" style="display:inline">write_object_model_3d</span><span data-if="c" style="display:none">write_object_model_3d</span><span data-if="cpp" style="display:none">WriteObjectModel3d</span><span data-if="com" style="display:none">WriteObjectModel3d</span><span data-if="dotnet" style="display:none">WriteObjectModel3d</span><span data-if="python" style="display:none">write_object_model_3d</span></a></code>, 
<code><a href="clear_object_model_3d.html"><span data-if="hdevelop" style="display:inline">clear_object_model_3d</span><span data-if="c" style="display:none">clear_object_model_3d</span><span data-if="cpp" style="display:none">ClearObjectModel3d</span><span data-if="com" style="display:none">ClearObjectModel3d</span><span data-if="dotnet" style="display:none">ClearObjectModel3d</span><span data-if="python" style="display:none">clear_object_model_3d</span></a></code>
</p>
<h2 id="sec_alternatives">可替代算子</h2>
<p>
<code><a href="segment_object_model_3d.html"><span data-if="hdevelop" style="display:inline">segment_object_model_3d</span><span data-if="c" style="display:none">segment_object_model_3d</span><span data-if="cpp" style="display:none">SegmentObjectModel3d</span><span data-if="com" style="display:none">SegmentObjectModel3d</span><span data-if="dotnet" style="display:none">SegmentObjectModel3d</span><span data-if="python" style="display:none">segment_object_model_3d</span></a></code>
</p>
<h2 id="sec_module">模块</h2>
<p>
3D Metrology</p>
<!--OP_REF_FOOTER_START-->
<hr>
<div class="indexlink">
<a href="index_classes.html"><span data-if="dotnet" style="display:none;">类别</span><span data-if="cpp" style="display:none;">类别</span></a><span data-if="dotnet" style="display:none;"> | </span><span data-if="cpp" style="display:none;"> | </span><a href="index_by_name.html">算子列表</a>
</div>
<div class="footer">
<div class="copyright">HALCON算子参考手册 Copyright © 2015-2023 51Halcon</div>
</div>
</div>
</body>
</html>
